/**
 * @file MessageACK.h
 * @author Karol Kulesza
 *  
 * Klasa odpowiadająca za obsługę potwierdzenia ACK otrzymanego od klienta. 
 */

#ifndef MESSAGEACK_H_
#define MESSAGEACK_H_

#include "MessageExecutor.h"
#include "../ClientController.h"
#include "../structures.h"


namespace tftp_server {

/**
 * @class MessageACK
 * Klasa odpowiadająca za obsługę potwierdzenia ACK otrzymanego od klienta. 
 */
class MessageACK: public tftp_server::MessageExecutor
{	
	/**
	 * Clientcontroller obsługujący wysyłanie pliku.
	 */
	ClientController *clientController;
	/**
	 * Otrzymany pakiet opakowujący potwierdznie ACK.
	 */
	Package package;
	
public:
	/**
	 * Konstruktor klasy.
	 * @param clientController_ - Clientcontroller obsługujący wysyłanie pliku. 
	 * @param package_ - otrzymany pakiet.
	 */
	MessageACK(ClientController *clientController_, Package package_);
	
	/**
	 * Destruktor klasy
	 */
	~MessageACK();
	
	/**
	 * Metoda obsługująca otrzymane potwierdzenie ACK.
	 */
	void execute() const;
};

}

#endif /* MESSAGEACK_H_ */
